#ifndef _MY_STRING_H_
#define _MY_STRING_H_ 1
#include <string>
#include <vector>

class StringOperation
{
  public:
    StringOperation() = default;
    virtual std::vector<int> get_next(const std::string &);
    virtual int kmp(const std::string &, const std::string &);
};

class AdvancedKmpMethod final : public StringOperation
{
  public:
    AdvancedKmpMethod() = default;
    std::vector<int> get_next(const std::string &) override final;
};

#endif